Skip to content

Add ERC: Agent Pre-Sign Risk Report - #2134

Open
soli0x wants to merge 33 commits into
ethereum:masterfrom
soli0x:presign-risk-report
Open

soli0x wants to merge 33 commits into
ethereum:masterfrom
soli0x:presign-risk-report

Conversation

@soli0x

@soli0x soli0x commented Oct 31, 2026 •

Copy link
Copy Markdown

Adds ERC-8481: Agent Pre-Sign Risk Report.

The report a risk source returns about a prepared, not yet signed, transaction or signature request, so an AI agent, a wallet or a policy engine can read it before signing. It binds to the exact request by a digest (including an EIP-7702 authorization list), names its source by an ERC-8004 identity, is EIP-712 signed, and carries typed findings in five groups: tokens (incl. Token Launch Observations readings, copies of an issuer's listed tokens, a pool's deviation from a price feed), approvals, addresses (incl. EIP-7702 delegate facts), payments (x402 payee verification outcomes) and text the agent read. Every finding states its block and evidence and is read or not read, never a silent zero. No score, no verdict: the consumer applies its own policy. It fits the consumer-filled risk slot of the Prepared Transaction Envelope proposal.

  • Discussion: https://ethereum-magicians.org/t/erc-8481-agent-pre-sign-risk-report/30145
  • Optional on-chain anchoring: assets/erc-8481/IPresignReportAnchor.sol and PresignReportAnchor.sol (by ted0x), a minimal anchor that records a report's hash with the block time, so a source's past reports stay attributable after it rotates keys.
  • Test vectors (all in assets/erc-8481/, contributed in the discussion and run before merging):
    • PreSignDelegateVectors.t.sol (MIT, by it44): Foundry tests for the EIP-7702 delegate findings, including the deployed code of a real Ethereum sweeper delegate.
    • PresignReportAnchor.t.sol and HistoricalSignerVectors.t.sol (by ted0x): the anchor, an ArbSys block-number variant, and historical signer checks, including an ERC-1271 key rotation (31 tests).
    • on-list/ (by runeclaw): JSON vectors and a dependency-free Python checker for address.on-list list documents (normalization, list hash, matching, not-read reasons, version diffs), including the FBI TraderTraitor address list of 2026-10-31 as one attested document.
  • Reference: Toll (ERC-8004 agent 20030) runs this as a live pre-sign check on Robinhood Chain (HTTP and MCP), with a one-line wallet client, @tollxyz/guard.

Related proposals (same author)

@eip-review-bot

eip-review-bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

File ERCS/erc-8481.md

Requires 1 more review from Editors: @g11tech, @jochem-brouwer, @samwilsn, @xinbenlv

…, owner-only, reportHash excludes detail; reference implementation is live
…ller, delegate-unbounded-outflow, delegate-authorizations), not read never false (review: it44)
…t itself and its signature are not another caller); delegate-authorizations reports sameSender and distinctAuthorities (review: it44)
…n order, in subjectDigest); address.delegation {before, after}; delegate findings read the code after the list, not read when a source cannot apply it, independent of revert (review: Revinand)
Comment thread ERCS/erc-8481.md Resolved
…registration-file example formatting; add it44's Foundry delegate vectors to assets/erc-8481 (MIT); delegate-unbounded-outflow is per call, not a bound on total outflow (review: abcoathup, it44)
@soli0x soli0x changed the title Add ERC: Agent Pre-Sign Risk Report Add ERC-8481: Agent Pre-Sign Risk Report Nov 2, 2026
@soli0x

soli0x commented Nov 2, 2026

Copy link
Copy Markdown
Author

The HTMLProofer failure looks like a stale Jekyll cache rather than this PR: it flags all.html and erc.html linking to /EIPS/eip-draft_agent_presign_risk_report, which was this file's name before the number was assigned. Nothing in the PR links there; the incremental build restored _site from an earlier run of this PR and did not regenerate the index pages. Could an editor clear the Jekyll cache for this PR or rerun it with a full build? Thanks.

…f the anchoring (last registry block at or before it, cross-chain), revoked or stolen keys do not erase anchored reports, signers SHOULD sit in a content-addressed registration file (review: douglasborthwick-cry)
@eip-review-bot eip-review-bot changed the title Add ERC-8481: Agent Pre-Sign Risk Report Add ERC: Agent Pre-Sign Risk Report Nov 2, 2026
@github-actions github-actions Bot added w-ci and removed w-ci labels Nov 2, 2026
haot3x and others added 2 commits November 3, 2026 10:28
… the anchoring block (same block as step 3); no archive state = not read, not unsigned; test case for a contract signer that rotates its key (review: ted0x)
@github-actions github-actions Bot added the w-ci label Nov 3, 2026
metafrogmeme-droid and others added 3 commits November 3, 2026 12:36
…ash, matching, diffs)

Vectors for the 1810662 list document: account normalization (EVM lowercase hex, bech32 lowercase, base58 exact, CAIP-10 with eip155:*), keccak256 of the RFC 8785 bytes after normalize, sort and dedupe, matching and value as the matching entry or null, not read unavailable/unsupported, conformance with attestation, and diffs between list versions. Includes the FBI 31 Oct 2026 TraderTraitor list as one attested document. Python 3 checker, standard library only. CC0-1.0.
…HOULD), duplicates with different content and invalid accounts (bad EIP-55, mixed-case bech32, leading-zero chain ref) do not conform, exact chain ref wins when two entries match, value is the normalized entry, non-conforming list reads unavailable, extra fields hashed and ignored, criteria verbatim (review: runeclaw)
ERC-8481 assets: on-list list document vectors
@eip-review-bot eip-review-bot changed the title Add ERC-8481: Agent Pre-Sign Risk Report Add ERC: Agent Pre-Sign Risk Report Nov 3, 2026
@github-actions github-actions Bot added w-ci and removed w-ci labels Nov 3, 2026
@soli0x
soli0x requested a review from abcoathup November 3, 2026 12:31
metafrogmeme-droid and others added 3 commits November 3, 2026 16:37
Six of the 7 open cases now follow the draft at 9abaacf: bad EIP-55
checksum, 0X prefix, eip155:01, duplicate account with different
content, two entries matching (exact chain reference wins) and a
non-conforming list (reads unavailable). The empty list is not ruled in
9abaacf and stays our call (basis: reference, conforms).

Also fixes the bad-checksum input of the first version, which was a
valid EIP-55 address. No existing hash changes.
…namespaces compared as written; the upstream document hash records what was read (review: runeclaw)
@github-actions github-actions Bot removed the w-ci label Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown

The commit ad9172d (as a parent of 99bc324) contains errors.
Please inspect the Run Summary for details.

@github-actions github-actions Bot added the w-ci label Nov 3, 2026
@eip-review-bot eip-review-bot changed the title Add ERC: Agent Pre-Sign Risk Report Website: Agent Pre-Sign Risk Report Nov 5, 2026
@github-actions github-actions Bot removed the w-ci label Nov 5, 2026
…e hashes) so the PR is not classed as a website change
@eip-review-bot eip-review-bot changed the title Website: Agent Pre-Sign Risk Report Add ERC: Agent Pre-Sign Risk Report Nov 5, 2026
…oval-change), intent.match, simulation evidence, call entity; a failed simulation is not read
…x classes from a published pattern set), agent.card and payment.description text fields, test case
@soli0x

soli0x commented Nov 9, 2026

Copy link
Copy Markdown
Author

all checks pass and every review comment is applied. ready for an editor review whenever you have time, thanks

@soli0x

soli0x commented Nov 15, 2026

Copy link
Copy Markdown
Author

a note for whichever editor picks this up: this PR and its two companions, #2121 (Token Launch Observations) and #2132 (x402 Payee Verification for ERC-8004 Agents), have all review comments applied and passing checks. they can be reviewed independently. thanks for your time.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants